home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 301-325 / disk_321 / ifs / source / ifsout.h < prev    next >
C/C++ Source or Header  |  1992-05-06  |  17KB  |  425 lines

  1. /*
  2. *
  3. *
  4. *     IFSout.h - Header file for the Iterated Function System
  5. *                uses IFS to create a IFS-Construction Image
  6. *     Released to the Public Domain - 1990 The Software Glen Company
  7. *
  8. *
  9. */
  10.  
  11. #include <stdio.h>
  12. #include <exec/libraries.h>
  13. #include <graphics/display.h>
  14. #include <graphics/gfxbase.h>
  15. #include <graphics/text.h>
  16. #include <math.h>
  17. #include <limits.h>
  18.  
  19. UBYTE stxt[NUMSTRS][GSTRLEN];          /* For the String Gadget Text    */
  20.  
  21. struct   GfxBase       *GfxBase;       /* Export the library pointers   */
  22. struct   IntuitionBase *IntuitionBase;
  23. struct   RastPort      *rp;            /* Graphics structures           */
  24. struct   ViewPort      *vp;
  25.  
  26. struct TextAttr StdFont = {
  27.        "topaz.font",                   /* Standard system font */
  28.        8,    0,    0
  29. };
  30.  
  31. struct   Window        *w, *adjwin;    /* Intuition structures        */ 
  32. struct   Screen        *screen;
  33. struct   IntuiMessage  *message;
  34.  
  35. struct Gadget gads[NUMGADS];       
  36.  
  37. struct Image PImages[NUMPROPS];        /* dummy AUTOKNOB Images are required */
  38. struct PropInfo PInfos[NUMPROPS];      /* These get copies of TPropInfo  */
  39.  
  40. struct StringInfo SInfo[NUMSTRS];
  41.  
  42. struct IntuiText StrngText[NUMSTRS]  = {
  43.       {2, 0, JAM2, -30, 0, NULL, "WN= ", NULL},
  44.       {2, 0, JAM2, -30, 0, NULL, "A = ", NULL},
  45.       {2, 0, JAM2, -30, 0, NULL, "B = ", NULL},
  46.       {2, 0, JAM2, -30, 0, NULL, "C = ", NULL},
  47.       {2, 0, JAM2, -30, 0, NULL, "D = ", NULL},
  48.       {2, 0, JAM2, -30, 0, NULL, "E = ", NULL},
  49.       {2, 0, JAM2, -30, 0, NULL, "F = ", NULL},
  50.       {2, 0, JAM2, -30, 0, NULL, "% = ", NULL}
  51. };
  52.  
  53. struct IntuiText MenuItemText[3][7] = {
  54.    {
  55.       {0, 1, JAM2, 0, 0, NULL, "About...", NULL},
  56.       {0, 1, JAM2, 0, 0, NULL, "Save IFS", NULL},
  57.       {0, 1, JAM2, 0, 0, NULL, "Get  IFS", NULL},
  58.       {0, 1, JAM2, 0, 0, NULL, "To WB   ", NULL},
  59.       {0, 1, JAM2, 0, 0, NULL, "Quit    ", NULL},
  60.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
  61.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
  62.    },
  63.  
  64.    {   
  65.       {0, 1, JAM2, 0, 0, NULL, "Zoom to Fit  ", NULL},
  66.       {0, 1, JAM2, 0, 0, NULL, "Zoom Out X 2 ", NULL},
  67.       {0, 1, JAM2, 0, 0, NULL, "Adjust Func  ", NULL},
  68.       {0, 1, JAM2, 0, 0, NULL, "Add Another  ", NULL},
  69.       {0, 1, JAM2, 0, 0, NULL, "Erase Current", NULL},
  70.       {0, 1, JAM2, 0, 0, NULL, "Erase All    ", NULL},
  71.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
  72.    },
  73.    
  74.    {
  75.       {0, 1, JAM2, CHECKWIDTH, 0, NULL, "Boxes  ", NULL},
  76.       {0, 1, JAM2, CHECKWIDTH, 0, NULL, "Numbers", NULL},
  77.       {0, 1, JAM2, CHECKWIDTH, 0, NULL, "Pause  ", NULL},
  78.       {0, 1, JAM2, CHECKWIDTH, 0, NULL, "BlkGrnd", NULL},
  79.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
  80.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
  81.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
  82.    }
  83. };
  84.  
  85. struct MenuItem MenuItem[3][7] = {
  86.    {
  87.       {&MenuItem[0][1], 0,  0, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  88.           0, (APTR)&MenuItemText[0][0], NULL, NULL, NULL, 0xFFFF},
  89.       {&MenuItem[0][2], 0, 20, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  90.           0, (APTR)&MenuItemText[0][1], NULL, NULL, NULL, 0xFFFF},
  91.       {&MenuItem[0][3], 0, 40, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP,
  92.           0, (APTR)&MenuItemText[0][2], NULL, NULL, NULL, 0xFFFF},
  93.       {&MenuItem[0][4], 0, 60, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP,
  94.           0, (APTR)&MenuItemText[0][3], NULL, NULL, NULL, 0xFFFF},
  95.       {NULL,            0, 80, 64, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP,
  96.           0, (APTR)&MenuItemText[0][4], NULL, NULL, NULL, 0xFFFF},
  97.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
  98.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
  99.       },
  100.    {
  101.       {&MenuItem[1][1], 0,  0, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  102.           0, (APTR)&MenuItemText[1][0], NULL, NULL, NULL, 0xFFFF},
  103.       {&MenuItem[1][2], 0, 20, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  104.           0, (APTR)&MenuItemText[1][1], NULL, NULL, NULL, 0xFFFF},
  105.       {&MenuItem[1][3], 0, 40, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  106.           0, (APTR)&MenuItemText[1][2], NULL, NULL, NULL, 0xFFFF},
  107.       {&MenuItem[1][4], 0, 60, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  108.           0, (APTR)&MenuItemText[1][3], NULL, NULL, NULL, 0xFFFF},
  109.       {&MenuItem[1][5], 0, 80, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  110.           0, (APTR)&MenuItemText[1][4], NULL, NULL, NULL, 0xFFFF},
  111.       {NULL,            0,100, 104, 10, ITEMTEXT|ITEMENABLED|HIGHCOMP, 
  112.           0, (APTR)&MenuItemText[1][5], NULL, NULL, NULL, 0xFFFF},
  113.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
  114.  
  115.       },
  116.       
  117.       {
  118.       {&MenuItem[2][1], 0,  0, 56+CHECKWIDTH, 10, 
  119.         ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|MENUTOGGLE,
  120.           0, (APTR)&MenuItemText[2][0], NULL, NULL, NULL, 0xFFFF},
  121.       {&MenuItem[2][2], 0, 20, 56+CHECKWIDTH, 10, 
  122.         ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|CHECKED|MENUTOGGLE, 
  123.           0, (APTR)&MenuItemText[2][1], NULL, NULL, NULL, 0xFFFF},
  124.       {&MenuItem[2][3], 0, 40, 56+CHECKWIDTH, 10, 
  125.         ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|MENUTOGGLE, 
  126.           0, (APTR)&MenuItemText[2][2], NULL, NULL, NULL, 0xFFFF},
  127.       {NULL,            0, 60, 56+CHECKWIDTH, 10, 
  128.         ITEMTEXT|ITEMENABLED|HIGHCOMP|CHECKIT|CHECKED|MENUTOGGLE,
  129.           0, (APTR)&MenuItemText[2][3], NULL, NULL, NULL, 0xFFFF},
  130.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
  131.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL},
  132.       {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
  133.       }
  134.    };
  135.  
  136.  
  137. struct Menu Menu[3] = {
  138.    {&Menu[1],   0,  0, 60,  0, MENUENABLED, "Project", &MenuItem[0][0]},
  139.    {&Menu[2],  81,  0, 76,  0, MENUENABLED, "Functions", &MenuItem[1][0]},
  140.    {NULL,     171,  0, 60,  0, MENUENABLED, "Control", &MenuItem[2][0]}
  141.    };
  142.  
  143.  
  144. struct PropInfo TPropInfo = {
  145.    AUTOKNOB | FREEHORIZ,  /* Flags */
  146.    0, 0,            /* Pots:  Horiz, Vert: both start at 0 */
  147.    0x00D4, 0x00D4,  /* Bodies: Horiz is 1/300, Vert is 1/300 */
  148.    0, 0, 0, 0, 0, 0 /* System usage stuff */
  149. };
  150.  
  151.  
  152. /* this is the template for the Gadget of a horizonal */
  153. /* Proportional Gadget */
  154.  
  155. struct Gadget TPropGadget = {
  156.    NULL,                      /* pointer to NextGadget      */
  157.    110, GADSIZE, (WIDTH/4), GADSIZE,  /* Select Box L T W H         */
  158.    GADGHCOMP,                 /* Flags                      */
  159.    GADGIMMEDIATE | RELVERIFY | FOLLOWMOUSE,   /* Activation flags           */
  160.    PROPGADGET,                /* Type                       */
  161.    NULL,                      /* pointer to Image filled in later */
  162.    NULL,                      /* no pointer to SelectRender filled later    */
  163.    NULL,                      /* no pointer to GadgetText   */
  164.    0,                         /* no MutualExclude           */
  165.    NULL,                      /* SpecialInfo proportional data filled later */
  166.    0,                         /* no ID                      */
  167.    NULL                       /* no pointer to special data */
  168. };
  169.  
  170. struct Gadget ZoomGadget = {
  171.    NULL,                      /* pointer to NextGadget      */
  172.    340, (2*GADSIZE), (2*GADSIZE), 80,  /* Select Box L T W H            */
  173.    GADGHCOMP,                 /* Flags                      */
  174.    GADGIMMEDIATE | RELVERIFY | FOLLOWMOUSE,   /* Activation flags     */
  175.    PROPGADGET,                /* Type                       */
  176.    NULL,                      /* pointer to Image filled in later */
  177.    NULL,                      /* no pointer to SelectRender */
  178.    NULL,                      /* no pointer to GadgetText   */
  179.    0,                         /* no MutualExclude           */
  180.    NULL,                      /* SpecialInfo proportional filled in later*/
  181.    0,                         /* no ID                      */
  182.    NULL                       /* no pointer to special data */
  183. };
  184.  
  185. struct Gadget CenterGadget = {
  186.    NULL,                      /* pointer to NextGadget      */
  187.    440, GADSIZE*2, (WIDTH/4), 80,  /* Select Box L T W H         */
  188.    GADGHCOMP,                 /* Flags                      */
  189.    GADGIMMEDIATE | RELVERIFY | FOLLOWMOUSE,   /* Activation flags           */
  190.    PROPGADGET,                /* Type                       */
  191.    NULL,                      /* pointer to Image filled in later */
  192.    NULL,                      /* no pointer to SelectRender */
  193.    NULL,                      /* no pointer to GadgetText   */
  194.    0,                         /* no MutualExclude           */
  195.    NULL,                      /* SpecialInfo proportional filled in later*/
  196.    0,                         /* no ID                      */
  197.    NULL                       /* no pointer to special data */
  198. };
  199.  
  200. struct Gadget TStrngGadget = {
  201.    NULL,                      /* pointer to NextGadget      */
  202.    40, GADSIZE, 50, GADSIZE,  /* Select Box L T W H         */
  203.    GADGHCOMP,                 /* Flags                      */
  204.    RELVERIFY | ENDGADGET,     /* Activation flags           */
  205.    STRGADGET,                 /* Type                       */
  206.    NULL,                      /* pointer to Image filled in later */
  207.    NULL,                      /* no pointer to SelectRender filled later    */
  208.    NULL,                      /* no pointer to GadgetText   */
  209.    0,                         /* no MutualExclude           */
  210.    NULL,                      /* SpecialInfo proportional data filled later */
  211.    0,                         /* no ID                      */
  212.    NULL                       /* no pointer to special data filled in later*/
  213. };
  214.  
  215. /* This is the text for the About requester */
  216. #define TXT01   ""
  217. #define TXT02   "         AMIGA IFSOUT V1.5"
  218. #define TXT03   "Public Domain by Software Glen Co."
  219. #define TXT04   "An Iterated Function System Viewer"
  220. #define TXT05   ""
  221. #define TXT06   "I would be interested in any new &"
  222. #define TXT07   "interesting functions you find.   "
  223. #define TXT08   ""
  224. #define TXT09   " Glen Fullmer"
  225. #define TXT10   " email fullmer@alfalfa.sps.mot.com"
  226. #define TXT11   ""
  227. #define TXT12   ""
  228. #define TXT13    "Algorithm from FRACTALS EVERYWHERE"
  229. #define TXT14     "               by Michael Barnsley"
  230.  
  231. struct IntuiText ReqText14 = {
  232.    0,            /* Front Pen */
  233.    1,            /* Back pen */
  234.    JAM2,         /* Draw Mode */
  235.    5,            /* Left Edge */
  236.    133,          /* Top */
  237.    &StdFont,     /* pointer to TextFont */
  238.    TXT14,
  239.    NULL          /* next */
  240. };
  241. struct IntuiText ReqText13 = {
  242.    0,            /* Front Pen */
  243.    1,            /* Back pen */
  244.    JAM2,         /* Draw Mode */
  245.    5,            /* Left Edge */
  246.    123,          /* Top */
  247.    &StdFont,     /* pointer to TextFont */
  248.    TXT13,
  249.    &ReqText14    /* next */
  250. };
  251. struct IntuiText ReqText12 = {
  252.    0,            /* Front Pen */
  253.    1,            /* Back pen */
  254.    JAM2,         /* Draw Mode */
  255.    5,            /* Left Edge */
  256.    113,          /* Top */
  257.    &StdFont,     /* pointer to TextFont */
  258.    TXT12,
  259.    &ReqText13    /* next */
  260. };
  261. struct IntuiText ReqText11 = {
  262.    0,            /* Front Pen */
  263.    1,            /* Back pen */
  264.    JAM2,         /* Draw Mode */
  265.    5,            /* Left Edge */
  266.    103,          /* Top */
  267.    &StdFont,     /* pointer to TextFont */
  268.    TXT11,
  269.    &ReqText12    /* next */
  270. };
  271. struct IntuiText ReqText10 = {
  272.    0,            /* Front Pen */
  273.    1,            /* Back pen */
  274.    JAM2,         /* Draw Mode */
  275.    5,            /* Left Edge */
  276.    93,           /* Top */
  277.    &StdFont,     /* pointer to TextFont */
  278.    TXT10,
  279.    &ReqText11    /* next */
  280. };
  281. struct IntuiText ReqText9 = {
  282.    0,            /* Front Pen */
  283.    1,            /* Back pen */
  284.    JAM2,         /* Draw Mode */
  285.    5,            /* Left Edge */
  286.    83,           /* Top */
  287.    &StdFont,     /* pointer to TextFont */
  288.    TXT09,
  289.    &ReqText10    /* next */
  290. };
  291. struct IntuiText ReqText8 = {
  292.    0,            /* Front Pen */
  293.    1,            /* Back pen */
  294.    JAM2,         /* Draw Mode */
  295.    5,            /* Left Edge */
  296.    73,           /* Top */
  297.    &StdFont,     /* pointer to TextFont */
  298.    TXT08,
  299.    &ReqText9     /* next */
  300. };
  301. struct IntuiText ReqText7 = {
  302.    0,            /* Front Pen */
  303.    1,            /* Back pen */
  304.    JAM2,         /* Draw Mode */
  305.    5,            /* Left Edge */
  306.    63,           /* Top */
  307.    &StdFont,     /* pointer to TextFont */
  308.    TXT07,
  309.    &ReqText8     /* next */
  310. };
  311. struct IntuiText ReqText6 = {
  312.    0,            /* Front Pen */
  313.    1,            /* Back pen */
  314.    JAM2,         /* Draw Mode */
  315.    5,            /* Left Edge */
  316.    53,           /* Top */
  317.    &StdFont,     /* pointer to TextFont */
  318.    TXT06,
  319.    &ReqText7     /* next */
  320. };
  321. struct IntuiText ReqText5 = {
  322.    0,            /* Front Pen */
  323.    1,            /* Back pen */
  324.    JAM2,         /* Draw Mode */
  325.    5,            /* Left Edge */
  326.    43,           /* Top */
  327.    &StdFont,     /* pointer to TextFont */
  328.    TXT05,
  329.    &ReqText6     /* next */
  330. };
  331. struct IntuiText ReqText4 = {
  332.    0,            /* Front Pen */
  333.    1,            /* Back pen */
  334.    JAM2,         /* Draw Mode */
  335.    5,            /* Left Edge */
  336.    33,           /* Top */
  337.    &StdFont,     /* pointer to TextFont */
  338.    TXT04,
  339.    &ReqText5     /* next */
  340. };
  341. struct IntuiText ReqText3 = {
  342.    0,            /* Front Pen */
  343.    1,            /* Back pen */
  344.    JAM2,         /* Draw Mode */
  345.    5,            /* Left Edge */
  346.    23,           /* Top */
  347.    &StdFont,     /* pointer to TextFont */
  348.    TXT03,
  349.    &ReqText4     /* next */
  350. };
  351. struct IntuiText ReqText2 = {
  352.    0,            /* Front Pen */
  353.    1,            /* Back pen */
  354.    JAM2,         /* Draw Mode */
  355.    5,            /* Left Edge */
  356.    13,           /* Top */
  357.    &StdFont,     /* pointer to TextFont */
  358.    TXT02,
  359.    &ReqText3     /* next */
  360. };
  361. struct IntuiText ReqText1 = {
  362.    0,            /* Front Pen */
  363.    1,            /* Back pen */
  364.    JAM2,         /* Draw Mode */
  365.    5,            /* Left Edge */
  366.    3,            /* Top */
  367.    &StdFont,     /* pointer to TextFont */
  368.    TXT01,
  369.    &ReqText2     /* next */
  370. };
  371.  
  372.  
  373. struct IntuiText OKIText = {
  374.    0, 1      , /* FrontPen, BackPen */
  375.    JAM2,       /* DrawMode */
  376.    6, 3,       /* LeftEdge, TopEdge (relative to gadget) */
  377.    &StdFont,   /* pointer to TextFont */
  378.    "OK",       /* pointer to Text */
  379.    NULL        /* no pointer to NextText */
  380. };
  381.  
  382.  
  383. struct   NewScreen ns = {
  384.    0, 0,                               /* start position                */
  385.    640, 400, 4,                        /* width, height, depth          */
  386.    0, 1,                               /* detail pen, block pen         */
  387.    HIRES|INTERLACE,                    /* Normal ViewMode               */
  388.    CUSTOMSCREEN,                       /* screen type                   */
  389.    &StdFont,                           /* font to use                   */
  390.    SCREENTITLE,                        /* default title for screen      */
  391.    NULL                                /* pointer to additional gadgets */
  392. };
  393.  
  394. struct NewWindow nw = {
  395.    0, 0,                               /* start position                */
  396.    WIDTH, HEIGHT,                      /* width, height                 */
  397.    -1, -1,                             /* detail pen, block pen         */
  398.    CLOSEWINDOW|MOUSEBUTTONS|MENUPICK|INTUITICKS,  /* IDCMP flags        */
  399.                                        /* Window flags*/
  400.    WINDOWCLOSE|ACTIVATE|BORDERLESS|SMART_REFRESH|NOCAREREFRESH,
  401.    NULL,                               /* Pointer to FirstGadget        */
  402.    NULL,                               /* pointer to user checkmark     */
  403.    NULL,                               /* window title                  */
  404.    NULL,                               /* pointer to screen (set below) */
  405.    NULL,                               /* pointer to superbitmap        */
  406.    0, 0, 640, 373,                     /* ignored since not sizeable    */
  407.    CUSTOMSCREEN                        /* type of screen desired        */
  408. };
  409.  
  410. struct NewWindow nadjwin = {
  411.    0, 20,                              /* start position                */
  412.    WIDTH,(((NUMPROPS-2) * GADSIZE)+30),/* width, height                 */
  413.    2,1,                                /* detail pen, block pen         */
  414.    CLOSEWINDOW | GADGETUP,             /* IDCMP flags        */
  415.    WINDOWCLOSE|WINDOWDRAG|SMART_REFRESH|NOCAREREFRESH, /* window flags */
  416.    &gads[NUMGADS-1],                   /* Pointer to FirstGadget        */
  417.    NULL,                               /* pointer to user checkmark     */
  418.    "Coefficients      Adjust              Zoom              Reposition        ",/* window title                  */
  419.    NULL,                               /* pointer to screen (set below) */
  420.    NULL,                               /* pointer to superbitmap        */
  421.    0, 0, 0, 0,                         /* ignored since not sizeable    */
  422.    CUSTOMSCREEN                        /* type of screen desired        */
  423.  
  424. };
  425.